﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using SMA.GENTEv1.Dados;

namespace SMA.GENTEv1
{
    public class AcoesLegaisReclamante
    {
        #region Variaveis Membro
        private int _idReclamanteProcesso;
        private Pessoa _pessoaReclamante;
        private List<SMA.GENTEv1.AcoesLegaisProcesso> _processo;
        private DateTime _dtAdesaoProcesso;
        private DateTime? _dtFimProcesso;
        private List<AcoesLegaisHistoricoProcesso> _historico;
        private GENTEEntities _context;
        #endregion

        #region Parametros
        public int IdReclamanteProcesso
        {
            get { return _idReclamanteProcesso; }
            set { _idReclamanteProcesso = value; }
        }

        public Pessoa PessoaReclamante
        {
            get { return _pessoaReclamante; }
            set { _pessoaReclamante = value; }
        }

        public List<SMA.GENTEv1.AcoesLegaisProcesso> Processo
        {
            get { return _processo; }
            set { _processo = value; }
        }

        public DateTime DtAdesaoProcesso
        {
            get { return _dtAdesaoProcesso; }
            set { _dtAdesaoProcesso = value; }
        }

        public DateTime? DtFimProcesso
        {
            get { return _dtFimProcesso; }
            set { _dtFimProcesso = value; }
        }

        public List<AcoesLegaisHistoricoProcesso> Historico
        {
            get { return _historico; }
            set { _historico = value; }
        }
        #endregion

        #region Construtores
        public AcoesLegaisReclamante()
        {
            _context = new GENTEEntities();
        }

        public AcoesLegaisReclamante(int _idreclamante, bool _carregaDados, bool _carregaHistorico, bool _carregaPessoa,
                                     bool _carregaProcesso)
        {
            _context = new GENTEEntities();
            if (!_carregaDados)
                this._idReclamanteProcesso = _idreclamante;
            else
                Carregar(_idreclamante, _carregaHistorico, _carregaPessoa, _carregaProcesso);
        }
        #endregion

        #region Métodos Privados
        private void Carregar(int _idreclamante, bool _carregaHistorico, bool _carregaPessoa, bool _carregaProcesso)
        {
            try
            {
                var consulta = from reclamante in _context.tab_acoes_legais_reclamante
                               where reclamante.id_reclamante_processo == _idreclamante
                               select new
                               {
                                   reclamante.id_reclamante_processo,
                                   reclamante.tab_pessoa.Id_pessoa,
                                   reclamante.tab_acoes_legais_processo.id_processo,
                                   reclamante.dt_adesao_processo,
                                   reclamante.dt_fim_processo
                               };

                var listConsulta = consulta.ToList();

                foreach (var list in listConsulta)
                {
                    this._idReclamanteProcesso = list.id_reclamante_processo;

                    if (_carregaHistorico)
                    {
                        AcoesLegaisHistoricoProcesso historico = new AcoesLegaisHistoricoProcesso();
                        this._historico = historico.SelectHistorico(list.id_reclamante_processo, true, true);
                    }

                    if (_carregaPessoa)
                        this._pessoaReclamante = new Pessoa(list.Id_pessoa);
                    else
                    {
                        this._pessoaReclamante = new Pessoa();
                        this._pessoaReclamante.IdPessoa = list.Id_pessoa;
                    }

                    if (_carregaProcesso)
                    {
                        AcoesLegaisProcesso processo = new AcoesLegaisProcesso();
                        this._processo = processo.SelectProcessoReclamante(list.id_reclamante_processo, false, false);
                    }

                    this._dtAdesaoProcesso = list.dt_adesao_processo;
                    this._dtFimProcesso = list.dt_fim_processo;
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private int RetornaIdReclamante()
        {
            try
            {
                int _valorRetorno = 0;

                var consulta = (from reclamante in _context.tab_acoes_legais_reclamante
                                orderby reclamante.id_reclamante_processo descending
                                select new
                                {
                                    reclamante.id_reclamante_processo
                                }).Take(1);

                var listConsulta = consulta.ToList();

                foreach (var list in listConsulta)
                {
                    _valorRetorno = list.id_reclamante_processo;
                }

                return _valorRetorno;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private static Expression<Func<TElement, bool>> BuildContainsExpression<TElement, TValue>(Expression<Func<TElement, TValue>> valueSelector, IEnumerable<TValue> values)
        {
            if (null == valueSelector)
            {
                throw new
                    ArgumentNullException("valueSelector");
            }
            if (null == values) { throw new ArgumentNullException("values"); }

            ParameterExpression p = valueSelector.Parameters.Single();
            if (!values.Any())
            {
                return e => false;
            }

            var equals = values.Select(value =>
            (Expression)Expression.Equal(valueSelector.Body, Expression.Constant(value,
            typeof(TValue))));
            var body = equals.Aggregate<Expression>((accumulate, equal) =>
            Expression.Or(accumulate, equal));
            return Expression.Lambda<Func<TElement, bool>>(body, p);
        }
        #endregion

        #region Métodos Públicos
        public List<AcoesLegaisReclamante> SelectReclamantes(int _idprocesso, bool _carregaHistorico, bool _carregaPessoa)
        {
            try
            {
                List<AcoesLegaisReclamante> listReclamantes = new List<AcoesLegaisReclamante>();

                var consulta = from reclamante in _context.tab_acoes_legais_reclamante
                               where reclamante.tab_acoes_legais_processo.id_processo == _idprocesso
                               select new
                               {
                                   reclamante.id_reclamante_processo,
                                   reclamante.tab_pessoa.Id_pessoa,
                                   reclamante.tab_acoes_legais_processo.id_processo,
                                   reclamante.dt_adesao_processo,
                                   reclamante.dt_fim_processo
                               };

                var listConsulta = consulta.ToList();

                foreach (var list in listConsulta)
                {
                    AcoesLegaisReclamante reclamante = new AcoesLegaisReclamante();

                    reclamante.IdReclamanteProcesso = list.id_reclamante_processo;
                    reclamante.DtAdesaoProcesso = list.dt_adesao_processo;
                    reclamante.DtFimProcesso = list.dt_fim_processo;

                    if (_carregaPessoa)
                        reclamante.PessoaReclamante = new Pessoa(list.Id_pessoa);
                    else
                    {
                        reclamante.PessoaReclamante = new Pessoa();
                        reclamante.PessoaReclamante.IdPessoa = list.Id_pessoa;
                    }

                    listReclamantes.Add(reclamante);
                }

                return listReclamantes;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<AcoesLegaisReclamante> SelectReclamantes(int[] _reclamantes, int _idprocesso, bool _carregaHistorico, bool _carregaPessoa)
        {
            try
            {
                List<AcoesLegaisReclamante> listReclamantes = new List<AcoesLegaisReclamante>();

                var consulta = from reclamante in _context.tab_acoes_legais_reclamante.Where((BuildContainsExpression<tab_acoes_legais_reclamante, int>(item => item.id_reclamante_processo, _reclamantes)))
                               where reclamante.tab_acoes_legais_processo.id_processo == _idprocesso
                               select new
                               {
                                   reclamante.id_reclamante_processo,
                                   reclamante.tab_pessoa.Id_pessoa,
                                   reclamante.tab_acoes_legais_processo.id_processo,
                                   reclamante.dt_adesao_processo,
                                   reclamante.dt_fim_processo
                               };

                var listConsulta = consulta.ToList();

                foreach (var list in listConsulta)
                {
                    AcoesLegaisReclamante reclamante = new AcoesLegaisReclamante();

                    reclamante.IdReclamanteProcesso = list.id_reclamante_processo;
                    reclamante.DtAdesaoProcesso = list.dt_adesao_processo;
                    reclamante.DtFimProcesso = list.dt_fim_processo;

                    if (_carregaPessoa)
                        reclamante.PessoaReclamante = new Pessoa(list.Id_pessoa);
                    else
                    {
                        reclamante.PessoaReclamante = new Pessoa();
                        reclamante.PessoaReclamante.IdPessoa = list.Id_pessoa;
                    }

                    listReclamantes.Add(reclamante);
                }

                return listReclamantes;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<AcoesLegaisReclamante> SelectReclamantes(int[] _idpessoa, int[] _idprocesso, bool _carregaPessoaReclamante, bool _carregaHistorico)
        {
            try
            {
                List<AcoesLegaisReclamante> listReclamante = new List<AcoesLegaisReclamante>();

                var consulta = (from reclamante in _context.tab_acoes_legais_reclamante
                                join pessoa in _context.tab_pessoa.Where((BuildContainsExpression<tab_pessoa, int>(item => item.Id_pessoa, _idpessoa))) on reclamante.tab_pessoa.Id_pessoa equals pessoa.Id_pessoa
                                select new
                                {
                                    reclamante.id_reclamante_processo,
                                    reclamante.tab_pessoa.Id_pessoa,
                                    reclamante.tab_acoes_legais_processo.id_processo,
                                    reclamante.dt_adesao_processo,
                                    reclamante.dt_fim_processo
                                });

                var listConsulta = consulta.ToList();

                foreach (var list in listConsulta)
                {
                    if (_idprocesso.Contains(list.id_processo))
                    {
                        AcoesLegaisReclamante reclamante = new AcoesLegaisReclamante();
                        reclamante.IdReclamanteProcesso = list.id_reclamante_processo;

                        if (_carregaPessoaReclamante)
                            reclamante.PessoaReclamante = new Pessoa(list.Id_pessoa);
                        else
                        {
                            reclamante.PessoaReclamante = new Pessoa();
                            reclamante.PessoaReclamante.IdPessoa = list.Id_pessoa;
                        }

                        AcoesLegaisProcesso processo = new AcoesLegaisProcesso();
                        reclamante.Processo = processo.SelectProcesso(list.id_processo);
                        reclamante.DtAdesaoProcesso = list.dt_adesao_processo;
                        reclamante.DtFimProcesso = list.dt_fim_processo;

                        if (_carregaHistorico)
                        {
                            AcoesLegaisHistoricoProcesso historico = new AcoesLegaisHistoricoProcesso();
                            reclamante.Historico = historico.SelectHistorico(list.id_reclamante_processo, true, false);
                        }

                        listReclamante.Add(reclamante);
                    }
                }

                return listReclamante;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<AcoesLegaisReclamante> SelectProcesso(int _idpessoa, bool _carregaProcesso, bool _carregaHistorico)
        {
            try
            {
                List<AcoesLegaisReclamante> listReclamante = new List<AcoesLegaisReclamante>();

                var consulta = (from reclamante in _context.tab_acoes_legais_reclamante
                                where reclamante.tab_pessoa.Id_pessoa == _idpessoa
                                orderby reclamante.tab_acoes_legais_processo.dt_abertura_proc 
                                select new
                                {
                                    reclamante.id_reclamante_processo,
                                    reclamante.tab_acoes_legais_processo.id_processo,
                                    reclamante.dt_adesao_processo,
                                    reclamante.dt_fim_processo
                                });

                var listConsulta = consulta.ToList();

                foreach (var list in listConsulta)
                {
                    AcoesLegaisReclamante reclamante = new AcoesLegaisReclamante();
                    reclamante.IdReclamanteProcesso = list.id_reclamante_processo;

                    if (_carregaProcesso)
                    {
                        AcoesLegaisProcesso processo = new AcoesLegaisProcesso();
                        reclamante.Processo = processo.SelectProcesso(list.id_processo);
                    }

                    reclamante.DtAdesaoProcesso = list.dt_adesao_processo;
                    reclamante.DtFimProcesso = list.dt_fim_processo;

                    if (_carregaHistorico)
                    {
                        AcoesLegaisHistoricoProcesso historico = new AcoesLegaisHistoricoProcesso();
                        reclamante.Historico = historico.SelectHistorico(list.id_processo, true, true, false);
                    }

                    listReclamante.Add(reclamante);
                }

                return listReclamante;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public AcoesLegaisReclamante SelectReclamantesHistorico(int _idhistorico, bool _carregaPessoa, bool _carregaProcesso)
        {
            try
            {
                AcoesLegaisReclamante resultReclamante = new AcoesLegaisReclamante();

                var consulta = from reclamante in _context.tab_acoes_legais_reclamante
                               join reclamantehistorico in _context.tab_acoes_reclamante_processo_historico_processo on reclamante.id_reclamante_processo equals reclamantehistorico.tab_acoes_legais_reclamante.id_reclamante_processo
                               where reclamantehistorico.tab_acoes_legais_historico_processo.id_historico_processo == _idhistorico
                               select new
                               {
                                   reclamante.id_reclamante_processo,
                                   reclamante.tab_pessoa.Id_pessoa,
                                   reclamante.tab_acoes_legais_processo.id_processo,
                                   reclamante.dt_adesao_processo,
                                   reclamante.dt_fim_processo
                               };

                var listConsulta = consulta.ToList();

                foreach (var list in listConsulta)
                {
                    AcoesLegaisReclamante reclamante = new AcoesLegaisReclamante();

                    resultReclamante.IdReclamanteProcesso = list.id_reclamante_processo;
                    resultReclamante.DtAdesaoProcesso = list.dt_adesao_processo;
                    resultReclamante.DtFimProcesso = list.dt_fim_processo;

                    if (_carregaPessoa)
                        resultReclamante.PessoaReclamante = new Pessoa(list.Id_pessoa);
                    else
                    {
                        resultReclamante.PessoaReclamante = new Pessoa();
                        resultReclamante.PessoaReclamante.IdPessoa = list.Id_pessoa;
                    }

                    if (_carregaProcesso)
                    {
                        AcoesLegaisProcesso processo = new AcoesLegaisProcesso();
                        resultReclamante.Processo = processo.SelectProcessoReclamante(list.id_reclamante_processo, false, false);
                    }
                }

                return resultReclamante;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public List<AcoesLegaisReclamante> SelectReclamantesCombo(int _idorganizacao)
        {
            try
            {
                List<AcoesLegaisReclamante> listReclamante = new List<AcoesLegaisReclamante>();

                var consulta = (from reclamante in _context.tab_acoes_legais_reclamante
                                join processo in _context.tab_acoes_legais_processo on reclamante.tab_acoes_legais_processo.id_processo equals processo.id_processo
                                where processo.tab_organizacao.Id_organizacao == _idorganizacao
                                select new
                                {
                                    reclamante.id_reclamante_processo,
                                    reclamante.tab_pessoa.Id_pessoa
                                }).Distinct();

                var listConsulta = consulta.ToList();

                foreach (var list in listConsulta)
                {
                    AcoesLegaisReclamante reclamante = new AcoesLegaisReclamante();
                    reclamante.IdReclamanteProcesso = list.id_reclamante_processo;
                    reclamante.PessoaReclamante = new Pessoa(list.Id_pessoa);

                    listReclamante.Add(reclamante);
                }

                return listReclamante;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void ProximoHistoricoProcesso(int _idprocesso, int _idreclamanteproc, int _idhistoricoproc, int _idpessoareclamante, 
                                             DateTime _dtprocesso, DateTime _dthistoricoproc, bool _carregaProcesso)
        {
            try
            {
                var consulta = (from historico in _context.tab_acoes_legais_historico_processo
                                join reclamantehistorico in _context.tab_acoes_reclamante_processo_historico_processo on historico.id_historico_processo equals reclamantehistorico.tab_acoes_legais_historico_processo.id_historico_processo
                                join reclamante in _context.tab_acoes_legais_reclamante on reclamantehistorico.tab_acoes_legais_reclamante.id_reclamante_processo equals reclamante.id_reclamante_processo
                                join processo in _context.tab_acoes_legais_processo on reclamante.tab_acoes_legais_processo.id_processo equals processo.id_processo
                                where processo.id_processo == _idprocesso
                                && reclamante.id_reclamante_processo == _idreclamanteproc
                                && historico.dt_historico > _dthistoricoproc
                                orderby historico.dt_historico, historico.id_historico_processo
                                select new
                                {
                                    reclamante.id_reclamante_processo,
                                    historico.id_historico_processo,
                                    processo.id_processo
                                }).Take(1);

                if (consulta.ToList().Count > 0)
                {
                    var listConsulta = consulta.ToList();

                    foreach (var list in listConsulta)
                    {
                        this._idReclamanteProcesso = list.id_reclamante_processo;
                        if (_carregaProcesso)
                        {
                            AcoesLegaisProcesso processo = new AcoesLegaisProcesso();
                            this._processo = processo.SelectProcesso(list.id_processo);
                        }

                        AcoesLegaisHistoricoProcesso historico = new AcoesLegaisHistoricoProcesso();
                        this._historico = historico.SelectPor(list.id_historico_processo, true, true);
                    }
                }
                else
                {
                    var consultaProc = (from historico in _context.tab_acoes_legais_historico_processo
                                        join reclamantehistorico in _context.tab_acoes_reclamante_processo_historico_processo on historico.id_historico_processo equals reclamantehistorico.tab_acoes_legais_historico_processo.id_historico_processo
                                        join reclamante in _context.tab_acoes_legais_reclamante on reclamantehistorico.tab_acoes_legais_reclamante.id_reclamante_processo equals reclamante.id_reclamante_processo
                                        join processo in _context.tab_acoes_legais_processo on reclamante.tab_acoes_legais_processo.id_processo equals processo.id_processo
                                        where processo.dt_abertura_proc > _dtprocesso
                                        && reclamante.tab_pessoa.Id_pessoa == _idpessoareclamante
                                        orderby processo.dt_abertura_proc, processo.id_processo, historico.dt_historico, historico.id_historico_processo
                                        select new
                                        {
                                            reclamante.id_reclamante_processo,
                                            historico.id_historico_processo,
                                            processo.id_processo
                                        }).Take(1);

                    if (consultaProc.ToList().Count > 0)
                    {
                        var listConsultaProc = consultaProc.ToList();

                        foreach (var list in listConsultaProc)
                        {
                            this._idReclamanteProcesso = list.id_reclamante_processo;
                            if (_carregaProcesso)
                            {
                                AcoesLegaisProcesso processo = new AcoesLegaisProcesso();
                                this._processo = processo.SelectProcesso(list.id_processo);
                            }

                            AcoesLegaisHistoricoProcesso historico = new AcoesLegaisHistoricoProcesso();
                            this._historico = historico.SelectPor(list.id_historico_processo, true, true);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void HistoricoAnteriorProcesso(int _idprocesso, int _idreclamanteproc, int _idhistoricoproc, int _idpessoareclamante, 
                                             DateTime _dtprocesso, DateTime _dthistoricoproc, bool _carregaProcesso)
        {
            try
            {
                var consulta = (from historico in _context.tab_acoes_legais_historico_processo
                                join reclamantehistorico in _context.tab_acoes_reclamante_processo_historico_processo on historico.id_historico_processo equals reclamantehistorico.tab_acoes_legais_historico_processo.id_historico_processo
                                join reclamante in _context.tab_acoes_legais_reclamante on reclamantehistorico.tab_acoes_legais_reclamante.id_reclamante_processo equals reclamante.id_reclamante_processo
                                join processo in _context.tab_acoes_legais_processo on reclamante.tab_acoes_legais_processo.id_processo equals processo.id_processo
                                where processo.id_processo == _idprocesso
                                && reclamante.id_reclamante_processo == _idreclamanteproc
                                && historico.dt_historico < _dthistoricoproc
                                orderby historico.dt_historico descending, historico.id_historico_processo descending
                                select new
                                {
                                    reclamante.id_reclamante_processo,
                                    historico.id_historico_processo,
                                    processo.id_processo
                                }).Take(1);

                if (consulta.ToList().Count > 0)
                {
                    var listConsulta = consulta.ToList();

                    foreach (var list in listConsulta)
                    {
                        this._idReclamanteProcesso = list.id_reclamante_processo;
                        if (_carregaProcesso)
                        {
                            AcoesLegaisProcesso processo = new AcoesLegaisProcesso();
                            this._processo = processo.SelectProcesso(list.id_processo);
                        }

                        AcoesLegaisHistoricoProcesso historico = new AcoesLegaisHistoricoProcesso();
                        this._historico = historico.SelectPor(list.id_historico_processo, true, true);
                    }
                }
                else
                {
                    var consultaProc = (from historico in _context.tab_acoes_legais_historico_processo
                                        join reclamantehistorico in _context.tab_acoes_reclamante_processo_historico_processo on historico.id_historico_processo equals reclamantehistorico.tab_acoes_legais_historico_processo.id_historico_processo
                                        join reclamante in _context.tab_acoes_legais_reclamante on reclamantehistorico.tab_acoes_legais_reclamante.id_reclamante_processo equals reclamante.id_reclamante_processo
                                        join processo in _context.tab_acoes_legais_processo on reclamante.tab_acoes_legais_processo.id_processo equals processo.id_processo
                                        where processo.dt_abertura_proc < _dtprocesso
                                        && reclamante.tab_pessoa.Id_pessoa == _idpessoareclamante
                                        orderby processo.dt_abertura_proc descending, processo.id_processo descending, historico.dt_historico descending, historico.id_historico_processo descending
                                        select new
                                        {
                                            reclamante.id_reclamante_processo,
                                            historico.id_historico_processo,
                                            processo.id_processo
                                        }).Take(1);

                    if (consultaProc.ToList().Count > 0)
                    {
                        var listConsultaProc = consultaProc.ToList();

                        foreach (var list in listConsultaProc)
                        {
                            this._idReclamanteProcesso = list.id_reclamante_processo;
                            if (_carregaProcesso)
                            {
                                AcoesLegaisProcesso processo = new AcoesLegaisProcesso();
                                this._processo = processo.SelectProcesso(list.id_processo);
                            }

                            AcoesLegaisHistoricoProcesso historico = new AcoesLegaisHistoricoProcesso();
                            this._historico = historico.SelectPor(list.id_historico_processo, true, true);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public int SelectQtdeReclamantesProcesso(int _idprocesso)
        {
            try
            {
                int qtdereclamantes = 0;

                var consulta = (from reclamante in _context.tab_acoes_legais_reclamante
                                where reclamante.tab_acoes_legais_processo.id_processo == _idprocesso
                                && reclamante.dt_fim_processo == null
                                select new
                                {
                                    reclamante.id_reclamante_processo
                                });

                qtdereclamantes = consulta.ToList().Count;

                return qtdereclamantes;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Salvar()
        {
            try
            {
                if (this._idReclamanteProcesso == 0)
                {
                    tab_acoes_legais_reclamante tabReclamante = new tab_acoes_legais_reclamante();
                    tabReclamante.tab_pessoaReference.EntityKey = new System.Data.EntityKey("GENTEEntities.tab_pessoa", "Id_pessoa", this._pessoaReclamante.IdPessoa);
                    tabReclamante.tab_acoes_legais_processoReference.EntityKey = new System.Data.EntityKey("GENTEEntities.tab_acoes_legais_processo", "id_processo", this._processo[0].IdProcesso);
                    tabReclamante.dt_adesao_processo = this._dtAdesaoProcesso;
                    tabReclamante.dt_fim_processo = this._dtFimProcesso;

                    _context.AddTotab_acoes_legais_reclamante(tabReclamante);
                    _context.SaveChanges();

                    this._idReclamanteProcesso = RetornaIdReclamante();
                }
                else
                {
                    tab_acoes_legais_reclamante tabReclamante = (from reclamante in _context.tab_acoes_legais_reclamante
                                                                 where reclamante.id_reclamante_processo == this._idReclamanteProcesso
                                                                 select reclamante).First();

                    tabReclamante.tab_pessoaReference.EntityKey = new System.Data.EntityKey("GENTEEntities.tab_pessoa", "Id_pessoa", this._pessoaReclamante.IdPessoa);
                    tabReclamante.tab_acoes_legais_processoReference.EntityKey = new System.Data.EntityKey("GENTEEntities.tab_acoes_legais_processo", "id_processo", this._processo[0].IdProcesso);
                    tabReclamante.dt_adesao_processo = this._dtAdesaoProcesso;
                    tabReclamante.dt_fim_processo = this._dtFimProcesso;

                    _context.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void Excluir(int _idprocesso)
        {
            try
            {
                var consulta = (from reclamante in _context.tab_acoes_legais_reclamante
                                where reclamante.tab_acoes_legais_processo.id_processo == _idprocesso
                                select reclamante);

                var listConsulta = consulta.ToList();

                foreach (var list in listConsulta)
                {
                    _context.DeleteObject(list);
                    _context.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion
    }
}
